package br.com.sgh.beans;

import br.com.sgh.dao.AcervoDAO;
import br.com.sgh.dao.EmprestimoDAO;
import br.com.sgh.dao.TituloDAO;
import br.com.sgh.entidade.Acervo;
import br.com.sgh.entidade.Emprestimo;
import br.com.sgh.entidade.Titulo;
import br.com.sgh.util.FacesContextUtil;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@ViewScoped
public class ConsultarAcervo implements Serializable {

    private static final long serialVersionUID = 1L;

    private List<Acervo> acervos;
    private Acervo acervo;
    private String titulo;
    private List<Titulo> titulos;

    private EmprestimoDAO emprestimoDao() {
        EmprestimoDAO<Emprestimo> dao = new EmprestimoDAO<Emprestimo>(Emprestimo.class, FacesContextUtil.getRequestSession());
        return dao;
    }

    private AcervoDAO acervoDao() {
        AcervoDAO<Acervo> dao = new AcervoDAO<Acervo>(Acervo.class, FacesContextUtil.getRequestSession());
        return dao;
    }

    private TituloDAO tituloDao() {
        TituloDAO<Titulo> tituloDAO = new TituloDAO<Titulo>(Titulo.class, FacesContextUtil.getRequestSession());
        return tituloDAO;
    }

    public String consultarAcervo(Integer codTitulo) {
        try {
            acervos = acervoDao().buscarAcervoTitulo(codTitulo);
            if (acervos.isEmpty()) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Livro não cadastrado no acervo", "Aviso"));
            }
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Erro", "Aviso"));
        }
        return null;
    }

    public String consultarTitulo() {
        acervos = null;
        try {
            titulos = tituloDao().pesquisaTitulos(titulo);
            this.titulo = "";
            if (titulos.isEmpty()) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Titulo não encontrado", "Aviso"));
            }
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Erro", "Aviso"));
        }

        return null;
    }

    public List<Acervo> getAcervos() {
        return acervos;
    }

    public void setAcervos(List<Acervo> acervos) {
        this.acervos = acervos;
    }

    public Acervo getAcervo() {
        return acervo;
    }

    public void setAcervo(Acervo acervo) {
        this.acervo = acervo;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public List<Titulo> getTitulos() {
        return titulos;
    }

    public void setTitulos(List<Titulo> titulos) {
        this.titulos = titulos;
    }

}
